<?php
require 'config.php';

// 获取短码
$code = $_GET['code'] ?? '';

if (empty($code)) {
    die('短链代码无效');
}

// 查询数据库，获取用户当初输入的那个 API（纯文本网址）
$stmt = $pdo->prepare("SELECT original_url FROM short_urls WHERE short_code = :code LIMIT 1");
$stmt->execute([':code' => $code]);
$row = $stmt->fetch();

if (!$row) {
    die('短链不存在或已失效');
}

$originalApiUrl = $row['original_url']; // 这个 API 返回的是纯文本，比如一个 URL

// ======================
// 调用该 API，获取它返回的纯文本内容（即跳转目标）
// ======================

// 推荐使用 cURL（更稳定，可设置超时等）
$ch = curl_init($originalApiUrl);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_TIMEOUT, 10); // 超时时间
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

$response = curl_exec($ch);

// 获取 HTTP 状态码
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($response === false) {
    $curlError = curl_error($ch);
    curl_close($ch);
    die('调用 API 失败，cURL 错误: ' . $curlError);
}

curl_close($ch);

// 检查 HTTP 响应状态码，推荐必须是 200
if ($httpCode !== 200) {
    die("API 返回了错误的状态码：$httpCode，无法获取跳转地址。");
}

// API 返回的就是纯文本，比如：https://真实目标.com/page
$finalUrl = trim($response);

// 可选：调试输出（正式环境请删除或注释掉）
// echo "<pre>API 返回的纯文本是：\n" . htmlspecialchars($finalUrl) . "</pre>";

// 验证它是否是一个合法的 URL
if (!filter_var($finalUrl, FILTER_VALIDATE_URL)) {
    die('API 返回的内容不是有效的网址：' . htmlspecialchars($finalUrl));
}

// ✅ 最终跳转到这个从 API 获取到的纯文本网址
header("Location: $finalUrl");
exit;
?>